﻿/************************************************************************
** 文  件：
**	ManualRecord.h
** 功  能：
**	手动录像实体类
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <string>
#include <memory>
#include "BaseRecord.h"

// 录像信息
typedef struct
{
	std::string eventId;
	std::string recordId;
	bool image;
	std::string deviceId;
	std::string deviceName;
	std::string recordPath;
	DateTime startTime;
	DateTime stopTime;
	int duration;
}RECORD_INFO;

// 录像回调: 结束状态 事件编码 是否图片 录像编码 设备编码 设备名称 录像路径 开始时间 结束时间 录像时长
typedef std::function<int(bool, RECORD_INFO)> EVENT_RC_CB;

class ManualRecord
	: public Record
{
public:
	ManualRecord();
	virtual ~ManualRecord();

public:
	std::string GetRecordId();
	void SetRecordId(std::string);

	DateTime GetBeginTime();
	void SetBeginTime(DateTime);

	bool GetRun();
	void SetRun(bool);

	bool GetCapture();
	void SetCapture(bool);

	void SetCallback(EVENT_RC_CB);
	EVENT_RC_CB GetCallback();

	bool IsTimeout();

protected:
	// 切片编码
	std::string m_recordId = "";
	// 启动时间
	DateTime m_beginTime = DateTime::Now();
	// 停止状态
	bool m_run;
	// 抓拍状态
	bool m_capture = false;
	// 录像回调
	EVENT_RC_CB m_cb;
};

typedef std::shared_ptr<ManualRecord> ManualRecordPtr;